golang 交叉编译,打包成可执行文件

您所在的位置:网站首页 golang 打包exe golang 交叉编译,打包成可执行文件

golang 交叉编译,打包成可执行文件

2023-09-10 09:20| 来源: 网络整理| 查看: 265

Golang支持交叉编译,也就是说你在32位平台的机器上开发,可以编译生成64位平台上的可执行程序.mac 下可以编译linux 下的执行程序 又或者windows下的执行程序 交叉编译依赖下面几个环境变量: $GOARCH 目标平台(编译后的目标平台)的处理器架构(386、amd64、arm) $GOOS 目标平台(编译后的目标平台)的操作系统(darwin、freebsd、linux、windows)

各平台的GOOS和GOARCH参考OS ARCH OS version linux 386 / amd64 / arm >= Linux 2.6 darwin 386 / amd64 OS X (Snow Leopard + Lion) freebsd 386 / amd64 >= FreeBSD 7 windows 386 / amd64 >= Windows 2000 跨平台编译步骤: 确定当前go环境的 mac 下的 GOARCH 和 GOOS

用go env 查看➜ ~ go env GOARCH="amd64" GOBIN="" GOEXE="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOOS="darwin" GOPATH="/Users/song/go" GORACE="" GOROOT="/usr/local/go" GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64" CC="clang" GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/v6/87fb06yx7yb46b79xlnj1y_m0000gn/T/go-build215820159=/tmp/go-build -gno-record-gcc-switches -fno-common" CXX="clang++" CGO_ENABLED="1" 首先确定当前编译环境的处理器架构,Linux mac 都可以用uname -a 来查看➜ ~ uname -a Darwin localhost 16.3.0 Darwin Kernel Version 16.3.0: Thu Nov 17 20:23:58 PST 2016; root:xnu-3789.31.2~1/RELEASE_X86_64 x86_64 ➜ ~ 目标机 Linux 下 这个是跑在Docker下的镜像[root@74780b70d0c0 Desktop]# uname -a Linux 74780b70d0c0 4.9.4-moby #1 SMP Wed Jan 18 17:04:43 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux [root@74780b70d0c0 Desktop]# 这里可以看到这个服务器的架构是 x86_64 这个架构亦称 amd64. ● 6g是amd64的go编译器,它生成的是.6文件。 ● 386一般使用8g命令,它生成的一般是.8格式的文件。 ● 当然还有一个5g的命令是用于arm的cpu, 同理amd64用6l,386用8l,arm用5l的链接器

明白了上面就开始交叉编译go的可执行程序了

编译对应平台下的执行文件 到源代码目录下执行:

Mac 下编译 Linux 和 Windows 64位可执行程序CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go Linux 下编译 Mac 和 Windows 64位可执行程序CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go Windows 下编译 Mac 和 Linux 64位可执行程序SET CGO_ENABLED=0 SET GOOS=darwin SET GOARCH=amd64 go build main.go

SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=amd64 go build main.go

不带前面参数的 go build 只是编译出开发环境适用的执行文件。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3